
//
//  IMAPIConfig.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * API配置类
 * 统一管理SDK中所有API的配置信息
 */
@interface IMAPIConfig : NSObject

/// 单例访问
+ (instancetype)sharedConfig;

#pragma mark - 服务器配置

/// API基础URL（生产环境）
@property (nonatomic, copy) NSString *baseURL;

/// API基础URL（测试环境）
@property (nonatomic, copy) NSString *debugBaseURL;

/// 当前是否为调试模式
@property (nonatomic, assign) BOOL isDebugMode;

/// 当前有效的基础URL
@property (nonatomic, readonly) NSString *currentBaseURL;

/// 内购支付基础URL（与 currentBaseURL 一致）
@property (nonatomic, readonly) NSString *inAppPurchaseBaseURL;

#pragma mark - 请求配置

/// 默认超时时间（秒）
@property (nonatomic, assign) NSTimeInterval defaultTimeoutInterval;

/// 默认重试次数
@property (nonatomic, assign) NSInteger defaultRetryCount;

/// 重试间隔（秒）
@property (nonatomic, assign) NSTimeInterval retryInterval;

/// 默认请求头
@property (nonatomic, strong) NSDictionary<NSString *, NSString *> *defaultHeaders;

#pragma mark - API端点

/// 登录接口路径
@property (nonatomic, readonly) NSString *loginEndpoint;

#pragma mark - 应用信息

/// 应用ID
@property (nonatomic, copy) NSString *appID;

/// SDK版本
@property (nonatomic, readonly) NSString *sdkVersion;

/// 应用版本
@property (nonatomic, copy) NSString *appVersion;

#pragma mark - 配置方法

/**
 * 配置生产环境
 * @param baseURL 生产环境基础URL
 * @param appID 应用ID
 */
- (void)configureProductionWithBaseURL:(NSString *)baseURL appID:(NSString *)appID;

/**
 * 配置测试环境
 * @param debugBaseURL 测试环境基础URL
 * @param appID 应用ID
 */
- (void)configureDebugWithBaseURL:(NSString *)debugBaseURL appID:(NSString *)appID;

/**
 * 切换到生产环境
 */
- (void)switchToProduction;

/**
 * 切换到测试环境
 */
- (void)switchToDebug;

@end

NS_ASSUME_NONNULL_END
